package com.wwz.frame.entity;

import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Component;

/***
 * @Description  @Value 注入内容
（1）注入普通字符；
（2）注入操作系统属性；
（3）注入表达式运算结果；
（4）注入其他Bean的属性；
（5）注入文件内容；
（6）注入网址内容；
（7）注入属性文件；
 * @Author wwz
 * @Date 2019/08/08
 * @Param
 * @Return
 */
@Data
@Component
@PropertySource("classpath:application.yml")
public class ValueDemo {
    /**注入普通字符串*/
    @Value("注入普通字符串!")
    private String normal;
    /**注入操作系统属性*/
    @Value("#{systemProperties['os.name']}")
    private String osName;
    /**注入表达式结果*/
    @Value("#{T(java.lang.Math).random() * 100.0}")
    private String randomNumber;
    /**注入其他Bean属性*/
    @Value("#{user.desc}")
    private String desc;
    /**注入文件资源*/
    @Value("classpath:/value.txt")
    private Resource testFile;
    /**注入网址资源*/
    @Value("http:www.baidu.com")
    private Resource testUrl;
    /**注入配置文件*/
    @Value("${value.user.name}")
    private String userName;

    /**
     * 通过注入Environment类来进行属性文件操作
     */
    @Autowired
    private Environment environment;

//    @Bean // 注入配置文件  SpringBoot默认自动生成了一个该方法
//    public static PropertySourcesPlaceholderConfigurer propertyConfigurer(){
//        return new PropertySourcesPlaceholderConfigurer();
//    }
}
